package com.hdj.chapter3;

import java.io.Serializable;

/**
 * @description 单例模式
 * @author  hdj
 * @date  2017/12/12.
 */
public class SingletonDemo4 implements Serializable{

    /**
     * 私有构造方法
     */

    private SingletonDemo4(){}

    /**
     * 静态内部类，类加载的时候创建实例 如果在构造函数中抛出异常，实例将永远得不到创建
     */
    public static class SingletonFactory{
        private static SingletonDemo4 instance = new SingletonDemo4();
    }

    /**
     * 获取实例
     */
    public static SingletonDemo4 getInstance(){
        return SingletonFactory.instance;
    }

    /**
     * 如果该对象被用于序列化，可以保证对象在序列化前后保持一致
     */
    public Object readResolve() {
        return getInstance();
    }
}
